package mobile.dominio;

import mobile.persistencia.PSaldoEnvase;
import mobile.persistencia.PZona;
import mobile.persistencia.PParametros;
import moio.util.ArrayList;
import moio.util.Iterator;
import waba.util.Date;
import waba.io.*;

/**
 * @author Diego
 *
 */
public class Cliente {

	private int id;
	private String nombre;
	private String direccion;
	private String telefono1;
	private String telefono2;
	private Zona zona;
	private Zona zonaSecundaria;
	private int orden;
	private int ordenSecundario;
	private boolean fromPalm;
	private float saldo;
	private String observaciones;
	private boolean inactivo;
	private boolean usarPrecioEspecial;
	private Date ultimacompra;
	private ArrayList colEnvases;
	
	public Cliente() {
		colEnvases = new ArrayList();
	}

	public Cliente(DataStream ds){      
		/* info */
		this.id = ds.readInt();
		this.nombre= ds.readString();
		this.direccion = ds.readString();
		this.telefono1 = ds.readString();
		this.telefono2 = ds.readString();
		this.zona = PZona.instance.obtenerZonaXID(ds.readInt());
		this.zonaSecundaria = PZona.instance.obtenerZonaXID(ds.readInt());
		this.orden = ds.readInt();
		this.ordenSecundario = ds.readInt();
		this.fromPalm = ds.readBoolean();
		this.saldo = ds.readFloat();
		this.observaciones = ds.readString();
		this.inactivo = ds.readBoolean();
		this.usarPrecioEspecial = ds.readBoolean();
		String cadena = ds.readString();
		if("".compareTo(cadena) == 0){
			this.ultimacompra = new Date("01/01/30");
		}else{
			String pepe = ds.readString();
			this.ultimacompra = new Date(cadena);
		}
		this.colEnvases = PSaldoEnvase.instance.saldoEnvaseXCliente(this);
	}
	
	public void saveTo(DataStream ds){
		ds.writeInt(this.id);
		ds.writeString(this.nombre);
		ds.writeString(this.direccion);
		ds.writeString(this.telefono1);
		ds.writeString(this.telefono2);
		
		if(this.zona != null){
			ds.writeInt(this.zona.getId());
		}else{
			ds.writeInt(0);
		}
		
		if(this.zonaSecundaria != null){
			ds.writeInt(this.zonaSecundaria.getId());
		}else{
			ds.writeInt(0);
		}
		
		ds.writeInt(this.orden);
		ds.writeInt(this.ordenSecundario);
		ds.writeBoolean(this.fromPalm);
		ds.writeFloat(this.saldo);
		ds.writeString(this.observaciones);
		ds.writeBoolean(this.inactivo);
		ds.writeBoolean(this.usarPrecioEspecial);
		if (this.ultimacompra != null){
			ds.writeString(this.ultimacompra.toString());
		}else{
			ds.writeString(null);
		}

		/*
		Iterator it = this.colEnvases.iterator();
		
		while(it.hasNext()){
			SaldoEnvase unSaldoEnvase = (SaldoEnvase)it.next();
		}*/
	}

	public boolean isfromPalm() {
		return fromPalm;
	}

	/**
	 * @param fromPalm
	 */
	public void setfromPalm(boolean fromPalm) {
		this.fromPalm = fromPalm;
	}

	/**
	 * @return
	 */
	public String getDireccion() {
		return direccion;
	}

	/**
	 * @param direccion
	 */
	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}

	/**
	 * @return
	 */
	public int getId() {
		return id;
	}

	/**
	 * @param id
	 */
	public void setId(int id) {
		this.id = id;
	}

	/**
	 * @return
	 */
	public String getNombre() {
		return nombre;
	}

	/**
	 * @param nombre
	 */
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	/**
	 * @return
	 */
	public int getOrden() {
		if(this.getZona() != null){
			return this.orden;
		}else{
			return this.ordenSecundario;
		}
	}

	/**
	 * @param orden
	 */
	public void setOrden(int orden) {
		this.orden = orden;
	}

	/**
	 * @return
	 */
	public String getTelefono1() {
		return telefono1;
	}

	/**
	 * @param telefono1
	 */
	public void setTelefono1(String telefono1) {
		this.telefono1 = telefono1;
	}

	/**
	 * @return
	 */
	public String getTelefono2() {
		return telefono2;
	}

	/**
	 * @param telefono2
	 */
	public void setTelefono2(String telefono2) {
		this.telefono2 = telefono2;
	}

	/**
	 * @return
	 */
	public Zona getZona() {
		return zona;
	}

	/**
	 * @param zona
	 */
	public void setZona(Zona zona) {
		this.zona = zona;
	}

	/**
	 * @return
	 */
	public float getSaldo() {
		return saldo;
	}

	/**
	 * @param saldo
	 */
	public void setSaldo(float saldo) {
		this.saldo = saldo;
	}

	/**
	 * @return
	 */
	public String getObservaciones() {
		return observaciones;
	}

	/**
	 * @param observaciones
	 */
	public void setObservaciones(String observaciones) {
		this.observaciones = observaciones;
	}

	public ArrayList getColEnvases() {
		return colEnvases;
	}

	public void setColEnvases(ArrayList colEnvases) {
		this.colEnvases = colEnvases;
	}

	public boolean isInactivo() {
		return inactivo;
	}

	public void setInactivo(boolean inactivo) {
		this.inactivo = inactivo;
	}

	public boolean usarPrecioEspecial() {
		return usarPrecioEspecial;
	}

	public void setUsarPrecioEspecial(boolean usarprecioepecial) {
		this.usarPrecioEspecial = usarprecioepecial;
	}

	public String toString() {
		return this.nombre;
	}

	public void setOrdenSecundario(int ordenSecundario) {
		this.ordenSecundario = ordenSecundario;
	}

	public void setZonaSecundaria(Zona zonaSecundaria) {
		this.zonaSecundaria = zonaSecundaria;
	}

	public Date getUltimacompra() {
		return ultimacompra;
	}

	public void setUltimacompra(Date ultimacompra) {
		this.ultimacompra = ultimacompra;
	}

}
